﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using QldtSdh.BLL;
using QldtSdh.DAL.Models;
using QldtSdh.GUI.Common;
using QldtSdh.GUI.Utils;
using QldtSdh.Utils;
namespace QldtSdh.GUI.NCS
{
    public partial class FormQuanLyHocVien_ChiTiet : BaseDialog
    {
        NghienCuuSinh ncs;
        KhoaHocNCS khoaHoc;
        NganhDaoTaoNCS nganh;
        int entityToBeAdded = 0;
        public event Common.TListChangedEventHandler OnChanged;
        public FormQuanLyHocVien_ChiTiet(KhoaHocNCS khoaHoc, NganhDaoTaoNCS nganh, NghienCuuSinh nghienCuuSinh = null)
        {
            InitializeComponent();
            this.ncs = nghienCuuSinh;
            this.khoaHoc = khoaHoc;
            this.nganh = nganh;
            LoadKhoaHoc();
            if (khoaHoc != null && khoaHoc.MaKhoaHocNCSGUID != "-1")
                cbxKhoaHoc.SelectedValue = khoaHoc.MaKhoaHocNCSGUID;
            LoadNganhDaoTao();
            if (nganh != null && nganh.MaNganhDaoTaoNCSGUID != "-1")
                cbxChuyenNganh.SelectedValue = nganh.MaNganhDaoTaoNCSGUID;
            InitInterface();
        }

        void LoadKhoaHoc()
        {
            var ls = BizKhoaHocNCS.GetList();
            cbxKhoaHoc.DataSource = ls;
            cbxKhoaHoc.DisplayMember = "TenKhoaHoc";
            cbxKhoaHoc.ValueMember = "MaKhoaHocNCSGUID";
        }

        void LoadNganhDaoTao()
        {
            var ls = BizChuyenNganhDaoTaoNCS.GetList();
            cbxChuyenNganh.DataSource = ls;
            cbxChuyenNganh.DisplayMember = "TenNganhDaoTao";
            cbxChuyenNganh.ValueMember = "MaNganhDaoTaoNCSGUID";
        }

        void InitInterface()
        {
            errorNotify.Clear();
            if (ncs != null)
            {
                if (!string.IsNullOrEmpty(ncs.MaKhoaHocNCSGUID))
                    cbxKhoaHoc.SelectedValue = ncs.MaKhoaHocNCSGUID;
                if (!string.IsNullOrEmpty(ncs.MaNganhDaoTaoNCSGUID))
                    cbxChuyenNganh.SelectedValue = ncs.MaNganhDaoTaoNCSGUID;
                txtHo.Text = ncs.HoDem;
                txtTen.Text = ncs.Ten;
                chkGioiTinh.Checked = ncs.GioiTinh;
                txtNgaySinh.Text = ncs.NgaySinh;
                txtNoiSinh.Text = ncs.NoiSinh;
                txtDiaChi.Text = ncs.DiaChi;
                txtEmail.Text = ncs.Email;
                txtQuocTich.Text = ncs.QuocTich;
                txtSoDienThoai.Text = ncs.SoDienThoai;
                chkTiepTucBoSung.Checked = chkTiepTucBoSung.Visible = false;
            }
            else
            {
                txtHo.Text = "";
                txtTen.Text = "";
                chkGioiTinh.Checked = false;
                txtNgaySinh.Text = string.Format("{0:dd/MM/yyyy}", DateTime.Now);
                txtNoiSinh.Text = "";
                txtDiaChi.Text = "";
                txtEmail.Text = "";
                txtQuocTich.Text = "Việt Nam";
                txtSoDienThoai.Text = "";
                chkTiepTucBoSung.Visible = true;
            }
            txtHo.Focus();
        }

        bool ValidateData()
        {
            errorNotify.Clear();
            if (cbxKhoaHoc.SelectedIndex == -1)
            {
                errorNotify.SetError(cbxKhoaHoc, "Bạn chưa chọn khóa học");
                return false;
            }
            if (cbxChuyenNganh.SelectedIndex == -1)
            {
                errorNotify.SetError(cbxChuyenNganh, "Bạn chưa chọn chuyên ngành");
                return false;
            }
            if (txtHo.Text.IsNullOrEmpty())
            {
                errorNotify.SetError(txtHo, "Bạn chưa nhập họ");
                return false;
            }
            if (txtQuocTich.Text.IsNullOrEmpty())
            {
                errorNotify.SetError(txtQuocTich, "Bạn chưa nhập quốc tịch");
                return false;
            }
            if (txtNgaySinh.Text.IsNullOrEmpty())
            {
                errorNotify.SetError(txtNgaySinh, "Bạn chưa nhập ngày sinh");
                return false;
            }
            return true;
        }

        private void btnDongY_Click(object sender, EventArgs e)
        {
            if (ValidateData())
            {
                if (ncs != null)
                {
                    ncs.HoDem = txtHo.Text;
                    ncs.Ten = txtTen.Text;
                    ncs.GioiTinh = chkGioiTinh.Checked;
                    ncs.NgaySinh = txtNgaySinh.Text;
                    ncs.QuocTich = txtQuocTich.Text;
                    ncs.SoDienThoai = txtSoDienThoai.Text;
                    ncs.Email = txtEmail.Text;
                    ncs.DiaChi = txtDiaChi.Text;
                    ncs.NoiSinh = txtNoiSinh.Text;
                    ncs.MaKhoaHocNCSGUID = cbxKhoaHoc.SelectedValue.ToString();
                    ncs.MaNganhDaoTaoNCSGUID = cbxChuyenNganh.SelectedValue.ToString();
                    var rs = BizNghienCuuSinh.Update(ncs);
                    if (rs == CODE_RESULT_RETURN.ThanhCong)
                        this.DialogResult = System.Windows.Forms.DialogResult.OK;
                    else
                        DialogUtils.ShowError("Không thể cập nhật");
                }
                else
                {
                    ncs = new NghienCuuSinh();
                    ncs.HoDem = txtHo.Text;
                    ncs.Ten = txtTen.Text;
                    ncs.GioiTinh = chkGioiTinh.Checked;
                    ncs.NgaySinh = txtNgaySinh.Text;
                    ncs.QuocTich = txtQuocTich.Text;
                    ncs.SoDienThoai = txtSoDienThoai.Text;
                    ncs.Email = txtEmail.Text;
                    ncs.DiaChi = txtDiaChi.Text;
                    ncs.NoiSinh = txtNoiSinh.Text;
                    ncs.MaKhoaHocNCSGUID = cbxKhoaHoc.SelectedValue.ToString();
                    ncs.MaNganhDaoTaoNCSGUID = cbxChuyenNganh.SelectedValue.ToString();
                    var rs = BizNghienCuuSinh.Add(ncs);
                    ncs = null;
                    if (rs == CODE_RESULT_RETURN.ThanhCong)
                    {
                        entityToBeAdded++;
                        OnChanged(this, null);
                        if (chkTiepTucBoSung.Checked)
                        {
                            InitInterface();
                        }
                        else
                            this.DialogResult = System.Windows.Forms.DialogResult.OK;
                    }
                    else
                        DialogUtils.ShowError("Không thể thêm mới nghiên cứu sinh");
                }
            }
        }

        private void FormQuanLyHocVien_ChiTiet_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (entityToBeAdded > 0)
                this.DialogResult = System.Windows.Forms.DialogResult.OK;
        }

        private void txtNgaySinh_Validating(object sender, CancelEventArgs e)
        {
            var ch = txtNgaySinh.Text.Split(new char[] { '/', '.', '-' }, StringSplitOptions.RemoveEmptyEntries);
            if (ch != null && ch.Count() == 3)
            {
                DateTime o = DateTime.Now;
                if (!DateTime.TryParse(string.Format("{0}/{1}/{2}", ch[1], ch[0], ch[2]), out o))
                    e.Cancel = true;
                else
                    errorNotify.Clear();
            }
            else e.Cancel = true;
        }

    }
}
